Computer systems typically include hardware components such as processors, power supplies, nonvolatile storage, peripheral devices, etc. Some of the components have configuration settings embodied as firmware code or data that can be modified by the user to tailor the component configuration for the particular system it is installed within.
For many computer systems, a time limited window of opportunity for changing the configuration settings becomes available after a Power On Self Test (POST) and before initiation of an operating system boot. Unless the user issues a keyboard key sequence during this window of opportunity to launch the configuration program, the computer will proceed to boot the operating system.
The configuration program allows the user to set various parameters stored within a nonvolatile memory. For example, power management options, peripheral device boot sequence, and numerous other settings may be modified using the configuration program. Typically password protection is available for the configuration program. When enabled, authentication by password is required before the user is able to make any value or option changes with the configuration program. This also enables a division of responsibility for modification of firmware configuration settings versus installation/removal/configuration of application programs.
At least one operating system vendor has provided infrastructure to permit changing the parameters through the operating system (i.e., in the post-OS boot execution environment). Privileges required for making such changes, however, are controlled exclusively by the operating system. The security offered by password protection of the configuration program is thus effectively bypassed.
This exposes the computer system firmware to the possibility of being modified by any program as long as the user (or program) has the appropriate privilege level as determined by the operating system vendor. The firmware is exposed to unauthorized modification as a result of malicious programs that could utilize security flaws in the operating system. Modification of the configuration parameters can cause the computer to behave in an undesirable manner resulting in physical harm to the computer system, loss or destruction of data, or rendering the computer unable to boot among other maladies.